/**
 * 此脚本用于修复食物记录中缺少分类ID的问题
 * 特别针对ID为681816cedd02bf9dbea85b18的白米饭记录
 */

const mongoose = require('mongoose');
require('dotenv').config();

// 导入模型定义
const Food = require('../src/models/food.model');
const FoodCategory = require('../src/models/foodCategory.model');

// 连接数据库
mongoose.connect(process.env.MONGODB_URL)
  .then(() => console.log('数据库连接成功'))
  .catch(err => {
    console.error('数据库连接失败:', err);
    process.exit(1);
  });

async function fixMissingCategory() {
  try {
    console.log('开始修复食物缺少分类ID的问题...');
    
    // 查找谷物分类的ID
    const cerealCategory = await FoodCategory.findOne({ name: '谷物' }).lean();
    
    if (!cerealCategory) {
      console.error('错误: 未找到谷物分类，请确保分类数据正确');
      return;
    }
    
    console.log(`找到谷物分类，ID: ${cerealCategory._id.toString()}`);
    
    // 查找白米饭记录
    const whiteRice = await Food.findById('681816cedd02bf9dbea85b18');
    
    if (!whiteRice) {
      console.error('错误: 未找到白米饭记录，请确认ID是否正确');
      return;
    }
    
    console.log(`找到白米饭记录: ${whiteRice.name}`);
    console.log(`当前分类ID: ${whiteRice.categoryId || '无'}`);
    
    // 更新分类ID
    whiteRice.categoryId = new mongoose.Types.ObjectId(cerealCategory._id);
    await whiteRice.save();
    
    console.log(`成功更新白米饭分类ID为: ${whiteRice.categoryId.toString()}`);
    
    // 确认更新成功
    const updatedRice = await Food.findById('681816cedd02bf9dbea85b18').lean();
    console.log(`确认更新: 白米饭分类ID现在是: ${updatedRice.categoryId.toString()}`);
    
    console.log('修复完成!');
    
  } catch (error) {
    console.error('修复过程中发生错误:', error);
  } finally {
    // 关闭数据库连接
    mongoose.connection.close();
    console.log('数据库连接已关闭');
  }
}

// 运行修复
fixMissingCategory(); 